package de.mnit.basis.swt.dialog;

import org.eclipse.swt.widgets.DirectoryDialog;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

import de.mnit.basis.fehler.Fehler;
import de.mnit.basis.fehler.system.F_Sys_Datei;
import de.mnit.basis.swt.element.A_SWT_Dialog2;
import de.mnit.basis.sys.datei.DSLokal;
import de.mnit.basis.sys.datei.DSOrdner;
import de.mnit.basis.sys.datei.S_Ordner;

/**
 * @author Michael Nitsche
 * 26.06.2007	Erstellt
 */
public class SWT_Dialog_Ordner extends A_SWT_Dialog2<SWT_Dialog_Ordner,DirectoryDialog> {

	private String titel;

	public SWT_Dialog_Ordner(String text) {
		Fehler.objekt.wenn_Null(text);
		this.titel=text;
	}


	public S_Ordner gErgebnis() {
		return this.gErgebnis(DSLokal.home());
	}

	public S_Ordner gErgebnis(S_Ordner startordner) {
		return this.gErgebnis(startordner.gPfadKomplett());
	}

	public S_Ordner gErgebnis(String startordner) {
		Fehler.objekt.wenn_Null(startordner);
		swt().setFilterPath(startordner);
		try {
			String erg=swt().open(); //TODO Fehler! Läßt sich nicht mehrfach öffnen
			return erg==null ? null : DSOrdner.neu(erg);
		}
		catch(F_Sys_Datei e) {
			SWT_Fehler.zeig(e, false);
			return null;
		}
	}

	public DirectoryDialog swt() {
		return this.erzeugeSWT(Display.getDefault().getActiveShell());
	}

	// ERZEUGEN

	protected int style() {
		return 0;
	}

	protected DirectoryDialog roh(Shell vater, int style) {
		return new DirectoryDialog((Shell)vater, 0);
	}

	protected void init() {
		swt().setText(this.titel);
	}

}
